import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.PriorityQueue;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {
    public static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    public static StringTokenizer st;

    public static String next() throws IOException {
        while(st==null|| !st.hasMoreTokens()){
            st=new StringTokenizer(br.readLine());
        }

        return st.nextToken();
    }

    public static String nextLine() throws IOException{
        return br.readLine();
    }

    public static boolean hasNext() throws IOException {
        return br.ready();
    }

    public static int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
    public static void main(String[] args) throws IOException {
        int n=nextInt();
        int k=nextInt();
        int l=nextInt();


        PriorityQueue<long[]> q=new PriorityQueue<>((a,b)->{
            if(a[0]!=b[0]){
                return Long.compare(a[0],b[0]);
            }
            return Long.compare(a[1],b[1]);
        });

        Set<Long> set=new HashSet<>();

        int[] weigth=new int[n+1];
        for(int i=0;i<n;i++){
            int a=nextInt();
            weigth[i]=a;
            q.offer(new long[]{a,1});
        }

        int count=0;

        while(!q.isEmpty()){
            long[] arr=q.poll();
            long w=arr[0];
            long num=arr[1];

            if(set.contains(w)) continue;



            if(num>=k){
                if(++count>=l){
                    System.out.println(w);
                    return;
                }
            }
            set.add(w);


            for(int i=0;i<n;i++){
                q.offer(new long[]{w+weigth[i],num+1});
            }

        }


    }


}

